#pragma once
#ifndef COMMON_INCLUDE_H
#define COMMON_INCLUDE_H

// std
#include <atomic>
#include <condition_variable>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <mutex>
#include <set>
#include <string>
#include <thread>
#include <typeinfo>
#include <unordered_map>
#include <vector>

#include <Eigen/Core>
#include <Eigen/Geometry>

// for Sophus
#include <sophus/se3.hpp>
#include <sophus/so3.hpp>

typedef Sophus::SE3d SE3;
typedef Sophus::SO3d SO3;

// for cv
#include <opencv2/opencv.hpp>
#include <opencv2/core/eigen.hpp>
//使用opencv2/core/core.hpp头文件的话，光流法没有被引入

#include<ros/ros.h>

#include<pcl/point_types.h>
#include<pcl/point_cloud.h>
using PointType = pcl::PointXYZI;

#include<sensor_msgs/PointCloud2.h>
#include <pcl_ros/point_cloud.h>

using namespace std;

#endif
